package com.zh.blog.controller.friendLink;

import com.zh.blog.annotation.OptLog;
import com.zh.blog.common.api.Result;
import com.zh.blog.dto.FriendLinkBackDto;
import com.zh.blog.dto.FriendLinkDto;
import com.zh.blog.service.FriendLinkService;
import com.zh.blog.vo.ConditionVO;
import com.zh.blog.vo.FriendLinkVO;
import com.zh.blog.vo.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

import java.util.List;

import static com.zh.blog.constant.OptTypeConst.REMOVE;
import static com.zh.blog.constant.OptTypeConst.SAVE_OR_UPDATE;

/**
 * 友链控制器
 * @author ZhengHao
 * Created At 2022/8/10.
 **/
@Api(tags = "友链模块")
@RestController
public class FriendLinkController {
    @Autowired
    private FriendLinkService friendLinkService;

    /**
     * 后台查看友链列表
     * @param conditionVO 提交
     * @return 友链列表
     */
    @ApiOperation(value = "后台查看友链列表")
    @GetMapping("/admin/links")
    public Result<PageResult<FriendLinkBackDto>> listFriendLinkDto(ConditionVO conditionVO) {
        return Result.ok(friendLinkService.listFriendLinkDto(conditionVO));
    }

    /**
     * 保存或者修改友链
     * @param friendLinkVO 友链信息
     * @return
     */
    @OptLog(optType = SAVE_OR_UPDATE)
    @ApiOperation(value = "保存或者修改友链")
    @PostMapping("/admin/links")
    public Result<?> saveOrUpdateFriendLink(@Valid @RequestBody FriendLinkVO friendLinkVO) {
        friendLinkService.saveOrUpdateFriendLink(friendLinkVO);
        return Result.ok();
    }

    /**
     * 删除友链
     * @param linkIdList 友链id列表
     * @return
     */
    @OptLog(optType = REMOVE)
    @ApiOperation(value = "删除友链")
    @DeleteMapping("/admin/links")
    public Result<?> deleteFriendLink(@RequestBody List<Integer> linkIdList) {
        friendLinkService.removeByIds(linkIdList);
        return Result.ok();
    }

    /**
     * 查看友链列表
     * @return 友链列表
     */
    @ApiOperation(value = "查看友链列表")
    @GetMapping("/links")
    public Result<List<FriendLinkDto>> listFriendLinks(){
        return Result.ok(friendLinkService.listFriendLinks());
    }
}